﻿namespace NPBehave
{
    public enum Stops
    {
        /// <summary>
        /// 启动时检查，且不监听黑板变化。
        /// 满足就进子节点，不满足直接返回失败。
        /// </summary>
        NONE,
        /// <summary>
        /// 启动时检查。满足则监听黑板变化。
        /// （启动时）满足-》（监听到）不满足：结束自己，并让父组合继续处理它的下一个节点。
        /// （启动时）不满足：不观察黑板变化，直接返回失败。
        /// </summary>
        SELF,
        /// <summary>
        /// 启动时检查。满足则监听黑板变化。
        ///（启动时）满足-》（监听到）不满足：无
        /// （启动时）不满足-》（监听到）满足：结束父组合。（结束当前节点，且父组合不在执行之后的节点，将当前节点结果作为父组合结果返回）
        /// </summary>
        LOWER_PRIORITY,
        /// <summary>
        /// 启动时检查，监听黑板变化。
        /// 满足-》不满足：结束自己，并让父组合继续处理它的下一个节点。
        /// 不满足-》满足：结束父组合。（结束当前节点，且父组合不在执行之后的节点，将当前节点结果作为父组合结果返回）
        /// </summary>
        BOTH,
        /// <summary>
        /// 启动时检查，监听黑板变化。
        /// 满足-》不满足：无
       ///  不满足-》满足：结束当前节点，并命令父组合立即重启自己。（将父组合当前下标指向自己，并结束当前节点，实际当前节点的结果可能会导致父组合并不能立即启动自己）
        /// </summary>
        IMMEDIATE_RESTART,
        /// <summary>
        /// 启动时检查，监听黑板变化。
        /// 满足-》不满足：结束自己，并让父组合继续处理它的下一个节点。
        /// 不满足-》满足：结束当前节点，并命令父组合立即重启自己。（将父组合当前下标指向自己，并结束当前节点，实际当前节点的结果可能会导致父组合并不能立即启动自己）
        /// </summary>
        LOWER_PRIORITY_IMMEDIATE_RESTART
    }
}